package com.example.demo.service;

import com.example.demo.UserInfo.UserInfo;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;


/**
 * @Autowired 存在的问题:UserComponent required a single bean, but 2 were found:
 * 	- u1: defined by method 'userInfo' in class path resource [com/example/demo/Component/UserComponent.class]
 * 	- userInfo2: defined by method 'userInfo2' in class path resource [com/example/demo/Component/UserComponent.class]
 *  解决方法:1:在要使用的 Bean 前加 @Primary 注解
 *          2:指定当前要注⼊的bean对象: @Qualifier注解不能单独使⽤，必须配合@Autowired使⽤
 *          3:private UserInfo u2;
 *          4:@Resource注解：是按照bean的名称进⾏注⼊。通过name属性指定要注⼊的bean的名称。
 *             @Resource(name="u2")
 *
 */

/**
 * @@Autowired 与 @Resource 的区别:
 * 1.: @Autowired 是spring框架提供的注解，⽽@Resource是JDK提供的注解
 * 2.:  @Autowired 默认是按照类型注⼊，⽽@Resource是按照名称注⼊. 相⽐于 @Autowired 来说，
 * @Resource ⽀持更多的参数设置，例如 name 设置，根据名称获取 Bean。
 *
 */
@Service
public class UserService {
    @Autowired
//    @Qualifier("u2")
    @Resource(name="userInfo2")
    private UserInfo userInfo;
    public void sayHi(){
        System.out.println("Hi UserService....");
        System.out.println(userInfo);
    }

}
